package com.hui.dao;

import com.hui.bean.StudentBean;
import org.apache.ibatis.annotations.Param;

import java.sql.SQLException;
import java.util.List;

public interface IStudentDao {

    /**
     * 得到所有的学生
     * @return  返回一个学生信息list即可
     */
    List<StudentBean> getAllStudent() throws SQLException;

    /**
     * 通过班级id查询此班级所有的学生
     * @param classId  班级的id
     * @return 返回一个相关条件的学生list集合
     */
    List<StudentBean> getStudentByClassId(int classId) throws SQLException;

    /**
     * 通过房间id查询此房间入住的所有学生
     * @param roomId  房间id
     * @return 返回一个相关条件的学生list集合
     */
    List<StudentBean> getStudentByRoomId(int roomId);

    /**
     * 学生入住/插入一条学生数据
     * @param studentBean 学生数据实体
     * @return 返回受影响行数
     */
    int saveStudent(StudentBean studentBean) throws SQLException;

    /**
     * 通过学生id删除一条学生数据
     * @param studentId 学生id
     * @return 受影响行数
     */
    int deleteStudentByStudentId(int studentId) throws SQLException;

    /**
     * 通过学生id查询此学生的信息
     * @param studentId  学生id
     * @return 学生信息对象
     */
    StudentBean getStudentByStudentId(int studentId) throws SQLException;

    /**
     * 更新学生的房间/学生换房
     * @param studentId 学生id
     * @param oldRoomId 老房间id
     * @param newRoomId 新房间id
     * @return 受影响行数
     */
    int updateStudentRoom(@Param("studentId") int studentId, @Param("oldRoomId") int oldRoomId, @Param("newRoomId") int newRoomId) throws SQLException;

    /**
     * 通过三个条件查询满足条件的学生对象
     * @param studentName  学生姓名
     * @param className 班级名
     * @param roomAddress 寝室地址
     * @return 返回下个对应条件的学生list集合
     */
    List<StudentBean> getStudentByCondition(@Param("studentName") String studentName, @Param("className") String className, @Param("roomAddress") String roomAddress) throws SQLException;



}



